package com.wxh.producerconsumer.synchronizedcodeblock;

import java.util.List;

/**
 * @ClassName: ConsumerThread
 * @Description: 消费者线程
 * @Author wxh
 * @Date: 2021/12/7 10:12
 * @Version V1.0.0
 * @Since 1.8
 */
public class ConsumerThread implements Runnable {

    /**
     *  存储数据集合
     */
    private List<Integer> list;

    /**
     * 初始化数据
     * @param list
     */
    public ConsumerThread(List<Integer> list){
        this.list = list;
    }

    @Override
    public void run() {
        while(true){
            synchronized(list){
                // 表明集合中无元素，此线程等待
                while(list.size() < 1){
                    try {
                        list.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                System.out.println(Thread.currentThread().getName() + " " + list.remove(0));
                // 通知生产者，集合中已无元素
                // 唤醒此对象锁所有等待线程(消费者和生产者线程均有)
                list.notifyAll();
            }
        }
    }
}
